﻿using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace DiscoveryLogic.UI.Layouts.Models
{

    public static class SliderDefaultsManager
    {
        private static SliderDefaults sliderDefaults;

        public static SliderDefaults getSliderDefaults()
        {
            // If the obj exists, return it
            // Otherwise, retrieve from WS and return it
            if (sliderDefaults == null)
            {
                sliderDefaults = new SliderDefaults();
            }

            return sliderDefaults;
        }
    }


    public class SliderDefaults
    {
        #region Private Variables

            // For enrollment scenario

            private double enrollContribMin;
            private double enrollContribMax;
            private double enrollContribDefault;

            // For retirement planner scenario

            private double plannerRetirementAgeMin;
            private double plannerRetirementAgeMax;
            private double plannerRetirementAgeDefault;

            private double plannerPlanToAgeMin;
            private double plannerPlanToAgeMax;
            private double plannerPlanToAgeDefault;

            private double plannerEssExpenesesMin;
            private double plannerEssExpenesesMax;
            private double plannerEssExpenesesDefault;

            private double plannerDisExpenesesMin;
            private double plannerDisExpenesesMax;
            private double plannerDisExpenesesDefault;

            private double plannerIncomeMin;
            private double plannerIncomeMax;
            private double plannerIncomeDefault;

            private double plannerHomeEquityMin;
            private double plannerHomeEquityMax;
            private double plannerHomeEquityDefault;

            private double plannerLiquidAssetsMin;
            private double plannerLiquidAssetsMax;
            private double plannerLiquidAssetsDefault;

            private double plannerInvestmentsMin;
            private double plannerInvestmentsMax;
            private double plannerInvestmentsDefault;

        #endregion

        #region Constructors

            public SliderDefaults()
            {
                // No WS yet, so set sample data
                SetSampleData();
            }

        #endregion

        #region Helper Methods

            private void SetSampleData()
            {
                // Sample data for enrollment scenario
                enrollContribMin = 0;
                enrollContribMax = 100;
                enrollContribDefault = 10;

                // Sample data for retirement planner

                plannerPlanToAgeMin = 50;
                plannerPlanToAgeMax = 110;
                plannerPlanToAgeDefault = 90;

                plannerRetirementAgeMin = 41;
                plannerRetirementAgeMax = 90;
                plannerRetirementAgeDefault = 50;

                plannerEssExpenesesMin = 0;
                plannerEssExpenesesMax = 50000;
                plannerEssExpenesesDefault = 20000;

                plannerDisExpenesesMin = 0;
                plannerDisExpenesesMax = 30000;
                plannerDisExpenesesDefault = 10000;

                plannerIncomeMin = 0;
                plannerIncomeMax = 100000;
                plannerIncomeDefault = 0;

                plannerHomeEquityMin = 0;
                plannerHomeEquityMax = 1000000;
                plannerHomeEquityDefault = 0;

                plannerLiquidAssetsMin = 0;
                plannerLiquidAssetsMax = 1000000;
                plannerLiquidAssetsDefault = 0;

                plannerInvestmentsMin = 0;
                plannerInvestmentsMax = 1000000;
                plannerInvestmentsDefault = 0;
            }

        #endregion

        #region Public Properties

            // Enrollment Slider Properties

            public double EnrollContribMin
            {
                get { return enrollContribMin; }
                set { enrollContribMin = value; }
            }

            public double EnrollContribMax
            {
                get { return enrollContribMax; }
                set { enrollContribMax = value; }
            }

            public double EnrollContribDefault
            {
                get { return enrollContribDefault; }
                set { enrollContribDefault = value; }
            }

            // Retirement Planner Properties

            // for plan to age slider
            public double PlannerPlanToAgeMin
            {
                get { return plannerPlanToAgeMin; }
                set { plannerPlanToAgeMin = value; }
            }

            public double PlannerPlanToAgeMax
            {
                get { return plannerPlanToAgeMax; }
                set { plannerPlanToAgeMax = value; }
            }

            public double PlannerPlanToAgeDefault
            {
                get { return plannerPlanToAgeDefault; }
                set { plannerPlanToAgeDefault = value; }
            }
        
            // for retirment age slider
            public double PlannerRetirementAgeMin
            {
                get { return plannerRetirementAgeMin; }
                set { plannerRetirementAgeMin = value; }
            }

            public double PlannerRetirementAgeMax
            {
                get { return plannerRetirementAgeMax; }
                set { plannerRetirementAgeMax = value; }
            }

            public double PlannerRetirementAgeDefault
            {
                get { return plannerRetirementAgeDefault; }
                set { plannerRetirementAgeDefault = value; }
            }

            // for essential expenses slider

            public double PlannerEssExpenesesMin
            {
                get { return plannerEssExpenesesMin; }
                set { plannerEssExpenesesMin = value; }
            }

            public double PlannerEssExpenesesMax
            {
                get { return plannerEssExpenesesMax; }
                set { plannerEssExpenesesMax = value; }
            }

            public double PlannerEssExpenesesDefault
            {
                get { return plannerEssExpenesesDefault; }
                set { plannerEssExpenesesDefault = value; }
            }

            // for discretionary expenses

            public double PlannerDisExpenesesMin
            {
                get { return plannerDisExpenesesMin; }
                set { plannerDisExpenesesMin = value; }
            }

            public double PlannerDisExpenesesMax
            {
                get { return plannerDisExpenesesMax; }
                set { plannerDisExpenesesMax = value; }
            }

            public double PlannerDisExpenesesDefault
            {
                get { return plannerDisExpenesesDefault; }
                set { plannerDisExpenesesDefault = value; }
            }

            // for post retirement income slider
               
            public double PlannerIncomeMin
            {
                get { return plannerIncomeMin; }
                set { plannerIncomeMin = value; }
            }

            public double PlannerIncomeMax
            {
                get { return plannerIncomeMax; }
                set { plannerIncomeMax = value; }
            }

            public double PlannerIncomeDefault
            {
                get { return plannerIncomeDefault; }
                set { plannerIncomeDefault = value; }
            }

            // for assets home slider

            public double PlannerHomeEquityMin
            {
                get { return plannerHomeEquityMin; }
                set { plannerHomeEquityMin = value; }
            }

            public double PlannerHomeEquityMax
            {
                get { return plannerHomeEquityMax; }
                set { plannerHomeEquityMax = value; }
            }

            public double PlannerHomeEquityDefault
            {
                get { return plannerHomeEquityDefault; }
                set { plannerHomeEquityDefault = value; }
            }             

            // for liquid assets
             
            public double PlannerLiquidAssetsMin
            {
                get { return plannerLiquidAssetsMin; }
                set { plannerLiquidAssetsMin = value; }
            }

            public double PlannerLiquidAssetsMax
            {
                get { return plannerLiquidAssetsMax; }
                set { plannerLiquidAssetsMax = value; }
            }

            public double PlannerLiquidAssetsDefault
            {
                get { return plannerLiquidAssetsDefault; }
                set { plannerLiquidAssetsDefault = value; }
            }   

            // for investments slider

            public double PlannerInvestmentsMin
            {
                get { return plannerInvestmentsMin; }
                set { plannerInvestmentsMin = value; }
            }

            public double PlannerInvestmentsMax
            {
                get { return plannerInvestmentsMax; }
                set { plannerInvestmentsMax = value; }
            }

            public double PlannerInvestmentsDefault
            {
                get { return plannerInvestmentsDefault; }
                set { plannerInvestmentsDefault = value; }
            }   
            
        #endregion

    }
}
